#!/bin/bash

# ROS2 工作空间一键下载脚本
set -e

# 仓库列表 - 格式: "仓库URL:目标目录"
# 注意：脚本在 src 目录下运行，所以目标目录不需要 src/ 前缀
repositories=(
    # image_common 相关包
    "https://github.com/ros-perception/image_common.git:image_common"

    # image_transport_plugins 相关包
    "https://github.com/ros-perception/image_transport_plugins.git:image_transport_plugins"

    # rclcpp 相关包
    "https://github.com/ros2/rclcpp.git:rclcpp"

    # rmw 相关包
    "https://github.com/ros2/rmw_fastrtps.git:rmw"

    # 可以在这里添加更多仓库
    # "https://github.com/example/repo.git:example"
)

echo "开始下载 ROS2 包..."
echo "当前工作目录: $(pwd)"

# 下载所有仓库
for repo_info in "${repositories[@]}"; do
    # 使用最后一个冒号作为分隔符，避免 URL 中的冒号干扰
    repo_url="${repo_info%:*}"
    target_dir="${repo_info##*:}"
    repo_name=$(basename "$repo_url" .git)

    # 检查目标目录是否存在
    if [ -d "$target_dir/$repo_name" ]; then
        echo "跳过 $repo_name (目录已存在: $target_dir/$repo_name)"
        continue
    fi

    # 检查目标目录是否为空
    if [ -d "$target_dir" ] && [ "$(ls -A "$target_dir" 2>/dev/null)" ]; then
        echo "跳过 $repo_name (目标目录非空: $target_dir)"
        continue
    fi

    echo "准备下载 $repo_name 到 $target_dir/..."

    # 创建目标目录
    mkdir -p "$target_dir"
    cd "$target_dir"

    echo "正在下载 $repo_name..."
    if git clone "$repo_url"; then
        echo "✓ $repo_name 下载成功"
    else
        echo "✗ $repo_name 下载失败"
    fi

    cd - > /dev/null
done

echo "所有包下载完成！"
echo "使用以下命令构建工作空间："
echo "cd .. && colcon build"
